package com.gun.management.module.raffle.service.lotterylog;

import com.gun.management.framework.common.pojo.PageResult;
import com.gun.management.module.raffle.controller.admin.lotterylog.vo.LotteryLogPageRequestVO;
import com.gun.management.module.raffle.controller.admin.lotterylog.vo.LotteryLogRespVO;
import com.gun.management.module.raffle.controller.admin.lotterylog.vo.LotteryLogSaveReqVO;
import com.gun.management.module.raffle.controller.admin.lotterylog.vo.LotteryLogUpdateReqVO;
import com.gun.management.module.raffle.controller.app.vo.*;
import com.gun.management.module.raffle.dal.dataobject.lotterylog.LotteryLogDO;

import jakarta.validation.Valid;

/**
 * 用户抽奖业务 Service 接口
 *
 * @author 测试账号
 */
public interface LotteryBizService {



    /**
     * 根据类型分别展示刮刮卡，九宫格以及大转盘，并获得待抽奖的奖品列表
     * @param telantId
     * @param reqVO
     * @param userId
     * @return
     */
    AppLotteryRespVO getLotteryPrizeList(Long telantId,AppLotteryCategoryReqVO reqVO,Long userId);


    /**
     * APP获得所有用户抽奖日志分页
     * @param userId
     * @param telantId
     * @param pageReqVO
     * @return
     */
    PageResult<AppUserLotteryLogRespVO> getAllUsersLotteryLogPage(Long userId,Long telantId,AppLotteryLogPageReqVO pageReqVO);

    public PageResult<AppLotteryLogRespVO> getAppLotteryLogPageList(Long telantId,AppLotteryLogPageReqVO pageReqVO,Long userId);


    PageResult<AppUserLotteryLogRespVO> getAppUserLotteryLogPageList(Long telantId,AppLotteryLogPageReqVO pageReqVO);

    PageResult<AppYearMonthGroupUserLotteryLogRespVO> getYearMonthGroupLotteryLogList(Long telantId,AppLotteryLogPageReqVO pageReqVO);


    /**
     * 获取APP用户抽奖结果
     * @param telantId
     * @param reqVO
     * @param userId
     * @return
     */
    public AppLotteryPrizeRespVO  getPlayResult(Long telantId,AppLotteryReqVO reqVO,Long userId);


    /**
     * 获取APP用户领奖结果
     * @param telantId
     * @param reqVO
     * @param userId
     * @return
     */
    public AppLotteryRecvPrizeRespVO getRecvPrizeResult(Long telantId, AppLotteryRecvPrizeReqVO reqVO,Long userId);

    /**
     * 抽奖校验
     * @param lotteryId
     * @param userId
     * @return
     */
    public Boolean getVerifyResult(Long lotteryId,Long userId);


}